Notes:Learning Spatiotemporal Features with 3D Convolutional Networks
Abstract:
本文提出了一个简单有效的方案,使用3D卷积在大规模视频中来学习空间时序(Spatiotemporal)特征,本文的贡献如下:
- 相比于2D卷积,3D卷积更加适合学习空间时序特征;
- 作者通过实验不同的网络结构,发现3*3*3的卷积核是最好的网络结构;
- 作者通过学习到的C3D特征去作为视频的描述子,采用简单的线性分类器,在4个benchmarks上,取得了比SOTA好的结果,同时在另外2个benchmarks上取得了和SOTA相当的结果;
- C3D学习到特征是压缩的、具有判别性的,通过PCA降维到10维,也能在UCF101上达到52.8%的准确度,相比于其他方法学到的特征,C3D特征更加压缩和具有判别性,在现实环境中可以更容易提高准确度和计算复杂度的trade-off;
Introduction
作者表明虽然在不同的视频任务领域,存在很多好的解决方案,但是仍然需要一个通用的视频描述子(generic video desciptor),这样会以一种统一的方式去解决大规模视频任务中的问题。
对于一个通用的视频描述子,以下简称GVD,作者认为有效的GVD应该具有如下四个性质:
- 通用性,这样才能才具有判别性的同时可以表示不同类型的视频,例如自然风景、体育运动、电视节目、电影等;
- 压缩性,因为当处理数百万个视频时,压缩的特征可以跟有效的处理、存储和检索;
- 计算有效性,在现实系统中,我们需要每分钟处理数千个视频;
- 易于实现,经过该描述子提取的特征,即使采用简单的分类器,例如线性分类器,也应该能取得不错的效果;
使用深度学习提取的图像特征不能直接适用于视频任务,因为这些图像特征缺乏对动作的建模。
作者人为本文的贡献如下:
- 作者做了一系列实验,包括视频分类、动作识别、场景识别和对象检测等,表明了3d深度卷积网络是好的模型来对外观(apperance)和动作(motion)同时建模;
- 作者通过有限的实验探索了各种不同的3d卷积网络的结构(kernel的大小不同),最终发现3*3*3的kernel是经验最优的结构,这一点和2D卷积中kernel的选取经验相似;
- 使用作者提出的C3D网络结构提取的特征,使用简单的线性SVM分类器,在4个不同的任务和6个不同的benchmark中取得了最优的效果;
Related Work
作者回顾了一些传统的视频描述子的方法,重点提到了目前最好的称为iDT的方法,并指出这个方法计算量大,难以扩展到大规模视频的任务中。
随着机器的计算力提高和数据量的增多,卷积神经网络在很多任务中有所突破。有些人利用深度学习学习到Image特征,通过迁移学习的方式在一些任务上取得了不错的效果,但是这些方法都是不适用于视频特征学习的。
在作者这篇文章之前,有几篇文章已经开始或多或少的提到了利用3D卷积去进行视频特征的学习,其中一篇文章是2013年的 3d convolutional neural networks for human action recognition,文章利用预处理的方式将视频中的头和身体进行分割,然后将分割后的视频送入3d卷积网络中做动作识别;另一篇是2014年Karpathy等人训练了深度网络去进行视频分类。
Learning features with 3D ConvNets
3D Convolution、3D Pooling、search for Network Architecture
3D Convolution VS 2D Convolution
和2D卷积不同,3D卷积有能力通过3D卷积和3D池化对时间信息进行建模。
2D卷积和3D卷积的区别
在一张图片上进行一次2D卷积,输出是一张图片(Feature Map),在一个视频进行一次2D卷积,输出同样是一张图片(Feature Map),在一个视频上进行一次3D卷积,输出则是另一个立方体,这个立方体保留了输入信号的时序信息。
总结: 2D卷积在每次卷积和池化和都丢失了时序信息,而3D卷积和池化则保留了时序信息。
search for Network Architecture
因为训练这种大型的网络是十分耗费时间的,因此作者根据2D卷积的经验,空间维度的卷积核采用3*3,而时间维度的卷积深度则通过不同的实验来选择,因此3D卷积核的大小为d*3*3。
为了找到时间维度上最优的卷积深度d,作者在中等规模的UCF101数据集上进行了3类实验:
- 全局采用一致的时间维度卷积深度d;
- 从前往后,时间维度卷积深度d逐层递增,3-3-5-5-7;
- 从前往后,时间维度卷积深度d逐层递减,7-5-5-3-3;
作者在搜索最优的时间卷积深度的时候,由于是在中等规模数据集上进行的,网络结构为:5层卷积和2层全连接。
卷积层的配置逐层如下:
- 64 kernels
- 128 kernels
- 256 kernels
- 256 kernels
- 256 kernels
所有的卷积层在空间和时间维度都采用SAME padding,因此卷积前后的size是不变的。每一层卷积后都接一层3D pooling层,除了第一层池化层的核为1*2*2外,其余池化层全部为2*2*2,因此经过池化层的size会缩小为原来的1/8。
说明:作者强调了第一层池化层在时间维度不进行池化有两个目的:
- 不想过早的合并时序信息;
- 输入是16帧图像,因此时间维度最多进行4次池化;
最终作者发现时间维度的卷积深度为3的时候,网络性能最佳,因此3*3*3是经验最优的3D卷积核,这也和2D卷积的3*3卷积核是统一的。
Spatiotemporal Feature learning
为了进行空间时序特征的学习,作者在一个大规模的数据集Sport-1M上进行了训练。Sport-1M包含100万个视频,每个视频属于487种运行类别种的一种,和UCF101相比,Sports-1M的视频数量是它的100倍,类别数目是它的5倍。因此作者也设计了容量更大的网络结构,如下所示:
网络一共8层卷积层,每一层紧接一个池化层,最后两个全连接层。
作者的实验结果如下:
- C3D视频描述子:在Sport-1M上训练过的网络可以用来作为视频分析任务的特征提取器,因为该c3d视频描述子具有很多优良的性质;
- C3D网络学习到了什么?
- 作者通过反卷积可视化技术,观察到对于视频的前几帧,网络学习到了外观apperance,在接下来的图像帧中,网络重点学习到了显著的动作。这表明和2D卷积网络不同,3D卷积网络选择性的学习到了动作和外观特征,而这些特征对于视频分类等问题,具有很好的判别性。
Experiment
作者后续又先后在
- Action Recognition
- Action Similarity Labeling
- Scene and Object Recognition
等任务中进行了实验,实验结果几乎都是属于SOTA结果,这也证明了C3D网络是一种优秀的网络结构用于处理视频任务。
作者其中还通过可视化技术t-SNE,将C3D学习到特征通过特征嵌入的方式,和ImageNet的特征进行了对比,表明了C3D学习到特征是压缩的。
Runtime Analysis
作者通过和传统方法iDT、深度学习方法Temporal Stream Network TSN方法的运行时间做了对比,表明c3d网络是高效的、计算成本低的方法。这也表明c3d可以很好的运行在现实系统中,因此具有很好的现实意义。
Conclusion
- C3D能同时对空间和时间信息建模;
- C3D特征是有效的、通用的、压缩的且易于实现的;
- C3D网络中
- 浅层的卷积层学习到了低层次的运动模式:例如颜色的改变、移动的边缘和边缘方向的改变;
- 中层的卷积层学习到了高层次、更大的运动模式:例如纹理的移动、身体躯干的移动、轨迹的移动等;
- 高层的卷积层学习到了更复杂的运行模式:例如移动的圆形物体、移动的自行车形状的物体;